package base.design.priciple.test5OpenClose;

import org.apache.logging.log4j.core.util.JsonUtils;

/**
 * 这是一个反例
 * 这里我们可以发现，如果我们想用魅族打电话的话，我们要新增一个MeizuPhoen.java  还要修改
 * PhoneManager 中的call 方法，增加一个if判读。改动的地方较多，不符合开闭原则。
 * 优化方法：把Phone 做成一个接口，并提供一个抽象的call 方法。见 OpenClose2
 */
public class OpenClose1 {
    public static void main(String[] args) {
        PhoneManager phoneManager = new PhoneManager();
        phoneManager.call(new XiaoMiPhone());
        phoneManager.call(new HuaWeiPhone());
    }
}

class PhoneManager {
    void call(Phone1 phone1) {
        if (phone1.phoneType.equals("xiaomi")) {
            callXiaomi();
        } else if (phone1.phoneType.equals("huawei")) {
            callHwei();
        }
    }

    void callXiaomi() {
        System.out.println("用小米手机打电话");
    }

    void callHwei() {
        System.out.println("用华为手机打电话");
    }
}

class Phone1 {
    String phoneType;
}

class XiaoMiPhone extends Phone1 {
    public XiaoMiPhone() {
        super.phoneType = "xiaomi";
    }
}

class HuaWeiPhone extends Phone1 {

    public HuaWeiPhone() {
        super.phoneType = "huawei";
    }
}